25 research outputs found
Polynomial-Time Fence Insertion for Structured Programs
To enhance performance, common processors feature relaxed memory models that reorder instructions. However, the correctness of concurrent programs is often dependent on the preservation of the program order of certain instructions. Thus, the instruction set architectures offer memory fences. Using fences is a subtle task with performance and correctness implications: using too few can compromise correctness and using too many can hinder performance. Thus, fence insertion algorithms that given the required program orders can automatically find the optimum fencing can enhance the ease of programming, reliability, and performance of concurrent programs. In this paper, we consider the class of programs with structured branch and loop statements and present a greedy and polynomial-time optimum fence insertion algorithm. The algorithm incrementally reduces fence insertion for a control-flow graph to fence insertion for a set of paths. In addition, we show that the minimum fence insertion problem with multiple types of fence instructions is NP-hard even for straight-line programs
Open Heterogeneous Quorum Systems
In contrast to proof-of-work replication, Byzantine replicated systems
maintain consistency with higher throughput, modest energy consumption, and
deterministic liveness guarantees. If complemented with open membership and
heterogeneous trust, they have the potential to serve as a global financial
infrastructure. This paper presents a general model of heterogeneous quorum
systems, where each participant can declare its own quorums, and captures the
consistency, availability, and inclusion properties of these systems. In order
to support open membership, it then presents reconfiguration protocols for
heterogeneous quorum systems: joining and leaving of a process, and adding and
removing of a quorum. It presents trade-offs for the properties that
reconfigurations can preserve, and accordingly, presents reconfiguration
protocols and proves their correctness. It further presents a graph
characterization of heterogeneous quorum systems, and its application for
reconfiguration optimization
Recommended from our members
BioScript: programming safe chemistry on laboratories-on-a-chip
This paper introduces BioScript, a domain-specific language (DSL) for programmable biochemistry which executes on emerging microfluidic platforms. The goal of this research is to provide a simple, intuitive, and type-safe DSL that is accessible to life science practitioners. The novel feature of the language is its syntax, which aims to optimize human readability; the technical contributions of the paper include the BioScript type system and relevant portions of its compiler. The type system ensures that certain types of errors, specific to biochemistry, do not occur, including the interaction of chemicals that may be unsafe. The compiler includes novel optimizations that place biochemical operations to execute concurrently on a spatial 2D array platform on the granularity of a control flow graph, as opposed to individual basic blocks. Results are obtained using both a cycle-accurate microfluidic simulator and a software interface to a real-world platform
Well-formed Properties of Heterogeneous Quorum Systems
Byzantine quorum systems provide higher throughput than proofof-work and
incur modest energy consumption. Further, their modern incarnations incorporate
personalized and heterogeneous trust. Thus, they are emerging as an appealing
candidate for global financial infrastructure. However, since their quorums are
not uniform across processes anymore, the properties that they should maintain
to support abstractions such as reliable broadcast and consensus are not
well-understood. In this paper, we first see a general model of heterogeneous
quorum systems where each participant can declare its own quorums, and capture
their properties. It has been shown that the two properties quorum intersection
and availability are necessary. In this paper, we prove that they are not
sufficient. We then define the notion of quorum inclusion, and show that the
three conditions together are sufficient: we present reliable broadcast and
consensus protocols, and prove their correctness for quorum systems that
provide the three properties
Concurrent Programming Paradigms, A Comparison in Scala
There is a rapid rise of multi-cores in recent hardware architectures. To exploit computational power of multi-core architectures, software should shift to be as concurrent as possible; and therefore should have concurrency control mechanisms. There are different concurrency programming paradigms such as locking and conditions, non-blocking algorithms, actors and software transactional memory (STM). There is a need to compare these approaches in terms of ease of use and performance. This work implements three fundamental cases of credit transfer, producer-consumer and token ring with different paradigms in Scala and the quantitative and qualitative results of the experiments are presented. Besides an STM implementation in Scala is presented
Transactors: Unifying Transactions and Actors
Composability and deadlock-freedom are important properties that are stated for transactional memory (TM). Commonly, the Semantics of TM requires linearization of transactions. It turns out that linearization of transactions that have cyclic communication brings incomposability and deadlock. Inspired from TM and Actors, this work proposes Transactors that provide facilities of isolation from TM and communication from Actors. We define the semantics of Transactors including support for cyclic transactional communication. An algorithm implementing this semantics is offered. The soundness of the algorithm is proved
C4: Verified Transactional Objects
A framework for Verified Transactional Objects in Coq.
- Formalization of concurrent objects, linearizability, strict
serializability, and associated proof techniques.
- Verified linearizable concurrent hash map
- Verified strictly serializable TML
- Verified strictly serializable transaction-predicated ma
On the Correctness of Transactional Memory Algorithms by
Transactional Memory (TM) provides programmers with a high-level and composable concurrency control abstraction. The correct execution of client programs using TM is directly dependent on the correctness of the TM algorithms. In return for the simpler programming model, designing a correct TM algorithm is an art. This dissertation contributes to the specification, safety criterion, testing and verification of TM algorithms. In particular, it presents techniques to prove the correctness or incorrectness of TM algorithms. We introduce a language for architecture-independent specification of synchronization algorithms. An algorithm specification captures two abstract properties of the algorithm namely the type of the used synchronization objects and the pairs of method calls that should preserve their program order in the relaxed execution. Decomposition of the correctness condition supports modular and scalable verification. We introduce the markability correctness condition as the conjunction of three intuitive invariants: writeobservation, read-preservation and real-time-preservation. We prove the equivalence of markability and opacity correctness conditions. We identify two pitfalls that lead to violation of opacity: the write-skew and write-exposur